package com.haixiaoke.saas.user.mapper;

import com.haixiaoke.saas.user.domain.CheckInPerson;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 入住人管理Mapper接口
 *
 * @author panda
 * @date 2024-04-11
 */
public interface CheckInPersonMapper {
    /**
     * 查询入住人管理
     *
     * @param personId 入住人管理主键
     * @return 入住人管理
     */
    CheckInPerson selectCheckInPersonByPersonId(Long personId);

    /**
     * 查询入住人管理列表
     *
     * @param checkInPerson 入住人管理
     * @return 入住人管理集合
     */
    List<CheckInPerson> selectCheckInPersonList(CheckInPerson checkInPerson);

    /**
     * 新增入住人管理
     *
     * @param checkInPerson 入住人管理
     * @return 结果
     */
    int insertCheckInPerson(CheckInPerson checkInPerson);

    /**
     * 修改入住人管理
     *
     * @param checkInPerson 入住人管理
     * @return 结果
     */
    int updateCheckInPerson(CheckInPerson checkInPerson);

    /**
     * 删除入住人管理
     *
     * @param personId 入住人管理主键
     * @return 结果
     */
    int deleteCheckInPersonByPersonId(Long personId);

    /**
     * 批量删除入住人管理
     *
     * @param personIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteCheckInPersonByPersonIds(Long[] personIds);

    /**
     * 将该用户下的入住人默认角色改为非默认
     *
     * @param userId
     * @return
     */
    int updateDefaultStateByLastPerson(@Param("userId") Long userId, @Param("personId") Long personId);

    int softDeleteCheckInPersonByPersonIds(Long[] personIds);

    /**
     * 检验该用户下管理的入住人的手机号是否已被使用
     * @param personId      id
     * @param userId        用户id
     * @param personPhone   手机号
     * @return
     */
    int checkPersonByPhone(@Param("personId") Long personId, @Param("userId") Long userId, @Param("personPhone") String personPhone);

    /**
     * 查询这个用户id下的默认角色
     * @param userId    用户id
     * @return
     */
    CheckInPerson selectDefaultPersonByUserId(Long userId);

    /**
     * 根据成员id批量查询成员数据
     * @param personIds
     * @return
     */
    List<CheckInPerson> selectCheckInPersonByPersonIds(List<Long> personIds);

    /**
     * 查询这个账号下指定身份证号
     * @param idCard
     * @param userId
     * @return
     */
    CheckInPerson selectPersonByIdCard(@Param("idCard") String idCard, @Param("userId") Long userId);
}
